Import a Data Model
                                    { importModel }
Imports a materialized data model from a PIE file and deploys it
Method
Input Parameters
Name
modelApiObject
Object Type
Description
The object representing the details for where to import a model PIE file.
Output Response
Successful Result Code
200
Description of Response Type
successful operation
Notes
This functions does not import the model definition file - it imports a live, active materialized model. Use 'importContent' method to import model definition files to the content manager. The response from the method - connection string - shows the final connection string of the deployed model.It is recommended that this API would not get executed in parallel.
Examples
Data Source Operations (JavaScript):
This example demonstrates how to operate with data sources.
The example uses API authentication driven from JavaScript. See Authentication APIs for alternatives.
// URL of the Pyramid installation and the path to the API 2.0 REST methods
var pyramidURL = "http://mysite.com/api2/";
// step 1: authenticate admin account and get token
// NOTE: callApi method is a generic REST method shown below.
let token = callApi("auth/authenticateUser",{
	"data":{
		"userName":"adminUser",
		"password":"12345678"
	}
},false);
log("got token "+token);
// step 2: find roles in the system
let findRole = callApi("access/getRolesByName",{
	"data": {
		"searchValue": "role1",
		"searchMatchType": 2//SearchMatchType.Equals
	},
	"auth": token // admin token generated above
});
let roleId=findRole.data[0].roleId;
log("found role with id= "+ roleId);
// step 3: add a new data source server (IMDB)
let createDataServer = callApi("dataSources/createDataServer",{
	"serverData": {
		"serverName": "new server",
		"serverType":13,// use the server type enumeration. 13 = IMDB
		"serverIp": "172.29.3.178",
		"port":5060,
		"serverAuthenticationMethod":0,//ServerAuthenticationMethod.UserPassword
		"userName":"default",
		"password":"password",
	},
	"auth": token // admin token generated above
});
let dataServerId=createDataServer.data.modifiedList[0].id;
log("created dataserver= "+ dataServerId);
// step 4: secure server from step 3 with roles
let addRolesToServer = callApi("dataSources/addRolesToServer",{
	"itemRoles": {
		"itemId":dataServerId,
		"itemRolePairList":[{
			"roleId":roleId,
			"accessType":2//AccessType.Read
		}]
	},
	"auth": token
});
log("added role1 to the newly created server");
// step 5: optional: check the roels on the server
let getRolesByServer= callApi("dataSources/getRolesByServer",{
	"serverId": dataServerId,
	"auth": token
});
// step 6: recognize an existing database on the server
//use this method when you want to address the database in Pyramid
let recognizeDataBase = callApi("dataSources/recognizeDataBase",{
	"dataBaseRecognitionObject": {
		"serverId":dataServerId, //this comes from step 3 above
		"dbName":"PyramidDemo"
	},
	"auth": token
});
let databaseId=recognizeDataBase.data.modifiedList[0].id;
log("found database "+databaseId+" at the dataserver");
// step 7: secure the database from step 3 with roles
let addRolesToDataBase = callApi("dataSources/addRolesToDataBase",{
	"itemRoles": {
		"itemId":databaseId,
		"itemRolePairList":[{
			"roleId":roleId,
			"accessType":3//AccessType.Write
		}]
	},
	"auth": token
});
// step 8A: read in an existing data model from a PIE file
let file="http://myOtherSite.com/SampleModel.pie";
let modelData=readPieFile(file);
// step 8B: import the file content into Pyramid
let importModel = callApi("dataSources/importModel",{
	"modelApiObject": {
		"fileZippedData":modelData, //model data from step 8A
		"databaseId":databaseId, //from step 6
		"materializedRoleAssignmentType":3//MaterializedRoleAssignmentType.ForceParentRoles
	},
	"auth": token
}).data;
// step 9: secure the model from step 3 with roles
let addRolesToModel = callApi("dataSources/addRolesToModel",{
	"itemRoles": {
		"itemId":importModel.modelId, //from step 8B
		"itemRolePairList":[{
			"roleId":roleId,
			"accessType":3//AccessType.Write
		}]
	},
	"auth": token
});
//step 10: delete the model
let deleteMaterializedModel = callApi("dataSources/deleteMaterializedModel",{
	"modelId": importModel.modelId,
	"auth": token
});
//step 11: delete the database
let deleteDataBase=callApi("dataSources/deleteDataBase",{
	"databaseId": databaseId,
	"auth": token
});
//step 12: delete the dta source (server)
let deleteDataSource = callApi("dataSources/deleteDataSource",{
	"sourceId": dataServerId,
	"auth": token
});
function log(msg){
	document.write(msg);
	console.log(msg);
}
function callApi(path,data,parseResult=true){
	var xhttp = new XMLHttpRequest();
	xhttp.open("POST", pyramidURL+path, false);
	xhttp.send(JSON.stringify(data));
	if(parseResult){
		return JSON.parse(xhttp.responseText);
	}else{
		return xhttp.responseText;
	}
}
//example function to read in the contents of a 'PIE' file that contains
//exported Pyramid content.
function readPieFile(file){
	var rawFile = new XMLHttpRequest();
	rawFile.open("GET", file, false);
	rawFile.send(null);
	rawFile.onreadystatechange = function () {
		if (request.readyState === 4 && request.status === 200) {
			return request.responseText;
        }
    }
}
		
                                
 MaterializedApiObject